iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
SideProject30

拿到一支Garmin錶,要怎麼開發app?系列 第 6

[Day-06] Monkey C的Symbol是什麼?

  • 分享至 

  • xImage
  •  

從官方的文字說明還是看不太懂Monkey C的Symbol是什麼?今天繼續了解下去,
爬文時發現在Ruby中也有Symbol的概念,
可以參考這篇其他人的鐵人賽作品:https://ithelp.ithome.com.tw/articles/10228024
裡面關於Ruby裡面Symbol的介紹我覺得還算清楚

簡言之,Symbol就是一種名為符號的物件類型,
只要是前贅一個冒號: 就是屬於Symbol的物件類型,
就像只要有兩個雙引號"" 夾起來的就一定是屬於String的類型一樣,不用想得太複雜。

Symbol的特性是,只要一個Symbol出現過一次,在記憶體中就會分配給這個Symbol一個固定位置,
之後如果出現相同的Symbol,則就都會使用這同一個位置。
相對的,同一個String則是每出現一次,都會在記憶體中分配給它不同位置。
舉例:

var a = :symbol_1;
var b = :symbol_1;
System.println(a == b);  // true 因為記憶體位置相同

var c = "String_2";
var d = "String_2";
System.println(c == d);  // false 因為記憶體位置不同

並且基於同一個Symbol會被固定在同一個記憶體位置的原因,
Symbol本身在也有著建立後就不可修改的特性,直接使用可省去宣告常數的時間跟力氣。


上一篇
[Day-05] Monkey C的型別
下一篇
[Day-07] Monkey C的那些規則-1
系列文
拿到一支Garmin錶,要怎麼開發app?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言